import Vuex from 'vuex'
import Vue from 'vue'
import axios from '@/axios'

Vue.use(Vuex)

const store = new Vuex.Store({
  // 全局状态
  state: {
    token: '',
    uid: 0,
    // 图片的服务器地址
    imgSrc: 'http://192.168.208.3/images/',
    // 用户基础数据
    userdata: {},
    // 用户头像图片名称
    userheaderimg: '',
    // 用户对象数据
    kgcUser: {},
    // 地区信息
    districts: []
  },
  // 相当于dao层只用来跟数据打交道，不能用来异步操作
  mutations: {
    // 存储用户uid
    setToken(state, n) {
      state.token = n
    },
    // 存储用户的uid
    setUser(state, n) {
      state.uid = n
    },
    getImg(state, n) {
      state.userheaderimg = state.imgSrc + n
    },
    initUser(state, n) {  
      state.kgcUser = n
    },
    getUserData(state, n){
      state.userdata = n
    }

  },
  // 处理业务逻辑的操作 相当于service层，可以用来提交mutations，不能直接操作state
  actions: {
    setToken(context, obj) {
      context.commit('setToken', obj)
    },
    setUser(context, obj) {
      context.commit('setUser', obj)
    },
    // 刷新用户头像
    async getImg(context, obj){
      const { data: res } = await axios.post('getUserHeadImg.calc', {
        uid: obj
      })
      context.commit('getImg', res.data)
    },
    async initUser(context, obj){
      const { data: res } = await axios.post('getUser.calc', { uid: obj })
      context.commit('initUser', res.data.kgcUser)
    },
    async getUserData(context, obj){
      const {data: res} = await axios.post('getUserData.calc', {uid: obj})
      context.commit('getUserData', res.data)
    },
    // 修改K币数量，并记录操作记录
    async setKbCount(context, obj){
      const {data: res} = await axios.post('setKbRecord.calc', obj)
      console.log(res)
      return res
    },
  },
})

export default store
